package cn.heyige.backend.service;

import cn.heyige.backend.dto.*;

import java.time.LocalDate;

/**
 * 占卜记录管理服务接口 - 精简版
 *
 * 专注于核心占卜记录管理功能，提高系统性能和可维护性
 *
 * @author CodeBuddy
 */
public interface DivinationRecordService {
    
    /**
     * 保存占卜记录
     *
     * @param userId 用户ID
     * @param request 保存请求
     * @return 保存结果
     */
    SaveDivinationRecordResponse saveDivinationRecord(Integer userId, SaveDivinationRecordRequest request);
    
    /**
     * 获取占卜历史记录
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param sort 排序方式
     * @return 分页历史记录
     */
    DivinationHistoryResponse getDivinationHistory(Integer userId, Integer page, Integer size,
                                                   LocalDate startDate, LocalDate endDate, String sort);
    
    /**
     * 获取占卜记录详情
     *
     * @param userId 用户ID
     * @param recordId 记录ID
     * @return 记录详情
     */
    DivinationRecordDetailResponse getDivinationRecordDetail(Integer userId, Integer recordId);
    
    /**
     * 添加/取消收藏
     *
     * @param userId 用户ID
     * @param request 收藏操作请求
     * @return 操作结果
     */
    FavoriteOperationResponse toggleFavorite(Integer userId, FavoriteRequest request);
    
    /**
     * 获取收藏列表
     *
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @return 收藏列表
     */
    FavoriteListResponse getFavoriteList(Integer userId, Integer page, Integer size);
    
    /**
     * 删除占卜记录
     *
     * @param userId 用户ID
     * @param recordId 记录ID
     * @return 是否删除成功
     */
    boolean deleteDivinationRecord(Integer userId, Integer recordId);

}